package to_hbase

import (
	"fmt"
	"database/sql"
	"EasyData/global"
	"errors"
)

type Excustor interface {
	/**
		执行任务的函数，参数1 记录 参数2，信号 执行完了给通道发信号
		参数3 sql 引擎 参数4 key，即数据的主键，删除数据时会用到
	 */
	TaskExcuse(item map[string]interface{}, c chan int,db *sql.DB,task *global.Task)
}

/**
	每个任务执行完后调用该方法
 */
func taskDone(c chan int){
	c<- 0
}

func GetExcustor(task *global.Task) Excustor{
	if task.OnlyDelete {
		return  &DeleteOnly{}
	}
	if task.Delete{
		return &TaskToHbaseDelete{}
	}
	if !task.Delete{
		return &TaskToHbaseOnly{}
	}
	errStr := fmt.Sprintf("wrong config OnlyDelete[%t] Delete[%t]",
		task.OnlyDelete,task.Delete)
	global.PanicError(errors.New(errStr),task)
	return nil
}

